<!DOCTYPE html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <title>网络编程  &middot; sitename</title>
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width, initial-scale=1">


<meta name="description" content="网络编程 description" />

<meta name="keywords" content="one, two, ">


<meta property="og:title" content="网络编程  &middot; sitename ">
<meta property="og:site_name" content="sitename"/>
<meta property="og:url" content="https://lvzongcheng.gitee.io/java/%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B%E7%AC%94%E8%AE%B0/" />
<meta property="og:locale" content="en-EN">


<meta property="og:type" content="article" />
<meta property="og:description" content="网络编程 description"/>
<meta property="og:article:published_time" content="2017-05-13T00:00:00Z" />
<meta property="og:article:modified_time" content="2017-05-13T00:00:00Z" />

  
    
<meta property="og:article:tag" content="one">
    
<meta property="og:article:tag" content="two">
    
  

  

<script type="application/ld+json">
  {
    "@context": "http://schema.org",
    "@type": "Article",
    "headline": "网络编程",
    "author": {
      "@type": "Person",
      "name": "LvZongCheng"
    },
    "datePublished": "2017-05-13",
    "description": "网络编程 description",
    "wordCount":  169 
  }
</script>



<link rel="canonical" href="https://lvzongcheng.gitee.io/java/%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B%E7%AC%94%E8%AE%B0/" />

<link rel="apple-touch-icon-precomposed" sizes="144x144" href="https://lvzongcheng.gitee.io/touch-icon-144-precomposed.png">
<link href="https://lvzongcheng.gitee.io/favicon.png" rel="icon">

<meta name="generator" content="Hugo 0.60.0" />

  <!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->

<link href='https://fonts.googleapis.com/css?family=Merriweather:300%7CRaleway%7COpen+Sans' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="/css/font-awesome.min.css">
<link rel="stylesheet" href="/css/style.css">
<link rel="stylesheet" href="/css/highlight/default.css">

  
  
	<script>
	  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
	  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
	  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
	  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

	  ga('create', 'Your Google Analytics tracking code', 'auto');
	  ga('send', 'pageview');

	</script>

</head>
<body>
  <main id="main-wrapper" class="container main_wrapper has-sidebar">
    <header id="main-header" class="container main_header">
  <div class="container brand">
  <div class="container title h1-like">
  <a class="baselink" href="https://lvzongcheng.gitee.io">
  LvZongCheng

</a>

</div>

  
<div class="container topline">
  
  淡定 执著 进取 自律


</div>


</div>

  <nav class="container nav primary no-print">
  

<a class="homelink" href="https://lvzongcheng.gitee.io">home</a>


  
<a href="https://lvzongcheng.gitee.io/framework" title="Show list of Frameworks">Frameworks</a>

<a href="https://lvzongcheng.gitee.io/java" title="Show list of Java">Java</a>

<a href="https://lvzongcheng.gitee.io/linux" title="Show list of Linux">Linux</a>

<a href="https://lvzongcheng.gitee.io/redis" title="Show list of Redis">Redis</a>

<a href="https://lvzongcheng.gitee.io/sql" title="Show list of SQL">SQL</a>

<a href="https://lvzongcheng.gitee.io/Spring" title="Show list of Spring">Spring</a>

<a href="https://lvzongcheng.gitee.io/tools" title="Show list of Tools">Tools</a>

<a href="https://lvzongcheng.gitee.io/webpage" title="Show list of WebPage">WebPage</a>

<a href="https://lvzongcheng.gitee.io/information" title="Show list of information">information</a>

<a href="https://lvzongcheng.gitee.io/network" title="Show list of network">network</a>

<a href="https://lvzongcheng.gitee.io/%E5%BE%AE%E6%9C%8D%E5%8A%A1" title="Show list of 微服务">微服务</a>

<a href="https://lvzongcheng.gitee.io/%E6%80%BB%E7%BB%93" title="Show list of 总结">总结</a>

<a href="https://lvzongcheng.gitee.io/%E6%9C%BA%E5%99%A8%E8%87%AA%E5%8A%A8%E5%8C%96" title="Show list of 机器自动化">机器自动化</a>

<a href="https://lvzongcheng.gitee.io/%E6%B1%87%E7%BC%96" title="Show list of 汇编">汇编</a>

<a href="https://lvzongcheng.gitee.io/%E8%AE%B0%E4%BA%8B%E6%9C%AC" title="Show list of 记事本">记事本</a>


</nav>

<div class="container nav secondary no-print">
  
<a id="contact-link-email" class="contact_link" rel="me" aria-label="Email" href="mailto:Lyc19880405@163.com">
  <span class="fa fa-envelope-square"></span></a>



<a id="contact-link-github" class="contact_link" rel="me" aria-label="Github" href="https://github.com/enten/hugo-boilerplate">
  <span class="fa fa-github-square"></span></a>




 


















</div>


  

</header>


<article id="main-content" class="container main_content single">
  <header class="container hat">
  <h1>网络编程
</h1>

</header>

  <div class="container content">
  <h3 id="javajavanet">Java网络编程（Java.net;）</h3>
<ol>
<li>IP地址：InetAddress(找到对方IP)</li>
<li>端口：将数据发送到指定程序上，对网络程序进行数字表示，
这个表示数字叫做端口，逻辑端口。0-65535</li>
<li>协议：通信规则即通信协议。TCP/IP
UDP数据报限制在64k内，不需要建立连接，速度快。</li>
</ol>
<p>Socket就是为网络服务提供的一种机制。
通信两端都有Socket.
网络通信就是Socket间的通信。
数据在两个Socket间通过IO传输。</p>
<p>================================================================</p>
<h4 id="utp">一、UTP传输</h4>
<ol>
<li>用DatagramSocket创建UTP服务并绑定端口，发送和接收数据报包</li>
<li>用DatagramPacket将数据封装成数据报，或将数据报解封成数据。</li>
</ol>
<p>发送数据：
例：
1.创建服务，通过DatagramSocket对象。
DatagramSocket ds=new DatagramSocket();
2.确定数据，并封装成数据包。DatagramPacket(byte[] buf,int length,InetAddress address,int port)
byte[] buf=&quot;udp ge men lai le&rdquo;.getBytes();
DatagramPacket dp=new DatagramPacket(buf,buf,length,InetAddress.getByName(&ldquo;192.168.1.254&rdquo;),10000);
3.通过socket服务，将已有的数据包发送出去。通过send方法。
ds.send(dp);
4.关闭资源。
ds.close();</p>
<p>接收数据:
//1.创建端点,监听一个端口。
DatagramSocket ds=new DatagramSocket();
while(true)
{
//2.定义数据包，用于存储数据。
byte[] buf=new byte[1024];
DatagramPacket dp=new DatagramPacket(buf,buf,length);
//3.通过服务的receive方法将收到数据存入数据包中。
ds.receive(dp);//阻塞式方法,解决无限循环问题。
//4.通过数据包的方法获取其中的数据。
String data=new String(dp.getData().0,dp.getLength());
int port=dp.getPort();
System.out.println(ip&rdquo;::&ldquo;+data+&rdquo;::&ldquo;+port);
//5.关闭资源
ds.close();
}</p>
<p>append是向多行文本框(TextArea)写入数据 
setText是向单行文本框(TextField)写人数据，getText是输出文本框中的数据。</p>
<p>================================================================</p>
<h4 id="tcp">二、Tcp传输</h4>
<p>Socket和ServerSocket
建立客服端和服务器端
建立连接后，通过Socket中的IO流进行数据的传输
关闭socket
同样，客服端与服务器端是两个独立的应用程序。</p>
<p>1.TCP分客户端和服务端。
2.客户端对应的对象是Socket.
服务端对应的对象是ServerSokcet.</p>
<p>例：
客户端：
//创建客服端的Socket服务。指定目的主机和端口
Socket s=new Socket(&ldquo;192.168.1.254&rdquo;);
//为了发送数据，应该获取socket流中是输出流。
outputStream out=s.getOutputStream();</p>
<p>out.write(&ldquo;sfadf afaaf&rdquo;.getBytes());
s.close()</p>
<h6 id="heading">服务端：</h6>
<p>//建立服务端socket服务。并监听一个端口。
ServerSocket ss=new ServerSocket(10003);
//通过accept方法获取连接过来的客户端对象。
Socket s=ss.accept();
//获取客户端发送过来的数据，那么要用客户端对象的读取流来读取数据。
InputStream in=s.getInputStream();
byte[] buf=new byte[1024];
int len=in.read(buf);
OutputStream out=s.getOutputStream();
out.write(&ldquo;已收到信息&rdquo;.getBytes());
System.out.println(new String(buf,0,len));
/*
PrintWriter out=new PrintWriter(s.getOutputStream(),true);
out.println(&ldquo;<!-- raw HTML omitted -->客服端你好<!-- raw HTML omitted -->&rdquo;);
*/</p>
<h6 id="heading1">客户端：</h6>
<p>在对象建立时，就可以去连接指定主机。
因为TCP是面向连接的。所以在建立Socket服务时，
就要有服务端存在，并连接成功，形成通路后，在该通道进行数据传输。</p>
<h6 id="heading2">步骤：</h6>
<p>1.创建Socket服务，并指定要连接的主机和端口。</p>
<h6 id="heading3">服务端：</h6>
<ol>
<li>建立服务端Socket服务。ServerSocket();
并监听一个端口。</li>
<li>获取连接过来的客户端对象。
通过ServerSocket的accpt方法。没有连接就会等，所以这个方法阻塞式的。</li>
<li>客户端如果发送过来的数据，那么服务端要使用对应的客户端对象，并获取到该客户端对象的读取流来读
取发送过来的数据。并打印在控制台。</li>
<li>关闭服务端。（可选操作）</li>
</ol>
<p>================================================================</p>
<h4 id="heading4">四、</h4>
<p>URLConnection
此类的实例可用于读取和写入此 URL 引用的资源(即去掉头信息)
代码例：</p>
<!-- raw HTML omitted -->
<!-- raw HTML omitted -->
<p>URL:
getFile() 
获取此 URL 的文件名。 
String getHost() 
获取此 URL 的主机名（如果适用）。 
String getPath() 
获取此 URL 的路径部分。 
int getPort() 
获取此 URL 的端口号。 
String getProtocol() 
获取此 URL 的协议名称。 
String getQuery()<br>
获取此 URL 的查询部分。//返回所带参数</p>
<p>C:\Windows\System32\drivers\etc\hosts 屏蔽网站。这是本地DNS服务
先访问本地DNS,如果没有才访问外网DNS服务器。</p>

</div>


  
</article>
      <footer id="main-footer" class="container main_footer">
  

  <div class="container nav foot no-print">
  
<a href="https://lvzongcheng.gitee.io/license">license</a>


  <a class="toplink" href="#">back to top</a>

</div>

  <div class="container credits">
  
<div class="container footline">
  
  code with <!-- raw HTML omitted --><!-- raw HTML omitted -->


</div>


  
<div class="container copyright">
  
  (c) 2015 yourname.


</div>


</div>

</footer>

    </main>
    
<script type="text/javascript">
  (function() {
    
    
    if (window.location.hostname == "localhost")
      return;
    var dsq = document.createElement('script'); dsq.async = true; dsq.type = 'text/javascript';
    dsq.src = '//your_disqus_shortname.disqus.com/count.js';
    (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
  })();
</script>



<script src="/js/highlight.pack.js"></script>
<script>hljs.initHighlightingOnLoad();</script>



    
  </body>
</html>

